/**
*  \file control_fan.c
*
*  \brief Fan control with hysteresis
*
*  \author Michael J. Hohmann  <michael.hohmann@linde-mh.de>
*
*
*/

/*===============================================[ private includes  ]================================================*/
#include "control_fan.h"
#include "../assertor/assertor.h"
#include "../pal/pal_mem.h"

/*===============================================[ private defines   ]================================================*/

/*===============================================[ private datatypes ]================================================*/

/*===============================================[ private variables ]================================================*/

/*===============================================[ private functions ]================================================*/

/*================================================[ inline functions ]================================================*/

/*================================================[ public functions ]================================================*/

RC control_fan_construct( struct control_fan_obj *me,  S16 const * p_temp_on, S16 const * p_temp_off )
{
    ASSERTOR_PRE( NIL != me,"NIL is not allowed as object pointer." );
    pal_memzero( me, sizeof(*me) );
    me->current_state=TRUE;
    me->p_temp_on=p_temp_on;
    me->p_temp_off=p_temp_off;
    
    return RC_SUCCESS;
}

BO control_fan( struct control_fan_obj *me, S16 temp )
{
    BO rv;
 
    if( me->current_state == (BO)TRUE )
    {
        rv =  (BO)(! (temp <= (*me->p_temp_off)/100));
    }
    else
    {
        rv =  (BO)(temp >= (*me->p_temp_on)/100);
    }

    me->current_state = rv;
    return rv;
}


/*===============================================[ private functions ]================================================*/


/***********************************************************************************************************************
*                             Copyright 2020 Linde Material Handling. All rights reserved.                             *
***********************************************************************************************************************/
